package org.origin.ferret.system.mapstruct;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.origin.centre.model.enums.XUsable;
import org.origin.centre.support.utils.EnumUtil;
import org.origin.ferret.system.model.dto.org.SysOrgInsertDto;
import org.origin.ferret.system.model.dto.org.SysOrgUpdateDto;
import org.origin.ferret.system.model.entity.SysOrgEntity;
import org.origin.ferret.system.model.vo.org.SysOrgVo;

/**
 * 系统机构对象-转换
 *
 * @author ferret
 * @version 2024-05-08
 */
@Mapper(componentModel = "spring")
public interface SysOrgMapstruct {

    SysOrgEntity toEntity(SysOrgInsertDto insertDto);

    SysOrgEntity toEntity(SysOrgUpdateDto updateDto);

    @Mapping(target = "statusLabel", expression = "java(getStatusLabel(entity.getStatus()))")
    SysOrgVo toVo(SysOrgEntity entity);

    default String getStatusLabel(Integer status) {
        return EnumUtil.getTitle(XUsable.class, status);
    }
}
